- web6047 - (2021/09/10(金) 現在、システム調整中のため、一部の表示がおかしいかもしれません)

web6047 2021年 4

プ ログラミングやRPG(作るほう)が好きな人の日記


このウェブページは毎日 夜11時にアクセスできなくなります。

朝6時半に再開されます。(世の中のネット依存対策として)

例外でアクセスができる場合があります。上のメニューの 「aboutThisWebsite」を参照してください。


以下の表は、このウェブページの管理人のパソコンの使用時間を管理・制限するためのものです。





































NO PC WEEK に代わる PC 使用制限のしくみ(β版)
No. A1.
1問
A2.
運動
B.
PC使用
開始時刻
C.
予定使用時間 時間:分
(当日限度時間 時間:分)
D.
予定終了時刻
E.
実際終了時刻
F. 実際使用時間 時間:分
(当日限度時間 時間:分)
オーバー理由
G.
判定
H. 作業内容346
記録しなかった長時間作業あり
4コマ漫画の模写の原作側の著作権について考察や追加記事など作成。
記録しなかった長時間作業あり
自作ツールの文字コード関連の不具合修正と、その記事作成。
364 20:35 2:00(4:00) 22:35 23:00 2:25(4:00) 3Dお姉さんによるプログラム説明
363 16:00 2:00(4:00) 18:00 18:07 2:07(4:00) 3Dお姉さんによるプログラム説明
362 × × 21:55 1:30(1:30) 23:25 23:49 1:54(1:30) グリフォンモデリング
361 22:00 1:30(1:30) 23:30 23:49 1:49(1:30) 3Dお姉さんによるプログラム説明
360 × × 15:00 2:00(2:00) 17:00 2:00 2:00(2:00)
(後日記入した、だいたいこんな感じの記録だった)
3Dお姉さんによるプログラム説明
359 22:50 1:00(2:00) 23:50 2:20 3:30(2:00)
アドレスバー関連のバグが絶えない…
× 3Dお姉さんによる プログラム説明
358 19:25 1:00(2:00) 20:25 21:06 1:41(2:00)
目的の完了まで時間がかかった
× 3Dお姉さんによるプログラム説明
記録 しなかった長時間作業あり
Windowsの画面端にマウスが来たときに何かをするしくみをセットアップしていた
記録しなかった長時間作業あり
Windowsのサウンド関係の不調対応。3Dお姉さんによるプログラム説明。RPG開発についてのメモの整頓。
357 × × 19:00 未設定(3:00) 未設定 3:00 8:00(3:00)
その後、バグに気が付いて直していた
× 3Dお姉さんによるプログラム説明
356 14:10 3:00(3:00) 17:10 18:13 4:03(3:00)
今日も、キリが悪かった…
(でもこの時刻で終わりにできるのはとてもいいことです)
× 3Dお姉さんによるプログラム説明
355 22:35 1:00(3:00) 23:35 0:05 1:30(3:00)
キリが悪かった…
× 3Dお姉さんによるプログラム説明
354 17:55 2:00(3:00) 19:55 20:19 2:24(3:00) 3Dお姉さんによるプログラム説明
353 × 15:15 1:00(1:00) 16:15 16:20 1:05(1:00) 3Dお姉さんによるプログラム説明
352 18:00 1:00(2:00) 19:00 7:00 12:00(2:00)
「~動揺せずに、続けます」と思ったらこれだ…
他のプログラムと少しおもむきが違い、切り上げづらいと感じている。おもむきの違いとは、
・遊ぶためのものではなく、教育的な目的がある。
・将来に完成を待つタイプのものではなく、すぐに使いたいもの。
× 3Dお姉さんによるプログラム説明
351 14:40 1:30(4:00) 16:10 21:00 6:20(4:00)
最近×が多いですが、表の効果は確かなので動揺せずに、続けます。
× 3Dお姉さんによるプログラム説明
記録 しなかった長時間作業あり
2時間ほど vbscript を使って、演奏中の iTunes の曲に評価をする機能を作成していた
350 21:20 1:30(4:00) 22:50 23:23 2:03(4:00)
調子よかったため
× 3Dお姉さんによるプログラム説明
349 18:30 1:00(4:00) 19:30 19:52 1:52(4:00) 3Dお姉さんによるプログラム説明
348 16:30 1:30(4:00) 18:00 18:01 1:30(4:00) 3Dお姉さんによるプログラム説明
347 22:00 1:30(1:30) 23:30 0:26 2:26(1:30)
キリが悪かった
× 3Dお姉さんによるプログラム説明

この表の意図:

多くの人はパソコンのやりすぎやネットゲームのやりすぎには困っていると思います。

参考に言うと、この表を使う前の私は 1 回の PC 使用時間がノンストップで 17 時間というときもあったし、平均で言うと毎日 9 時間はやっていたと思います。

数年前から考えてきましたが、そういう徹夜とか長時間作業をするよりも、昼間の短時間 作業のほうが生産性は高いのではないかと思います。

この表を使ってパソコンの使用時間を 事前に決めてネット上に 公開 することで、パソコンのやりすぎを防止できたら、と思います。

以前は NO PC WEEK と称してパソコンを使用しない期間を設けることでやりすぎに対処してきましたが、もっと具合の良い方法はないかと考え、この表を使うようになりました。


記入の法則:

  • 日付は表示していません(私の生活パターンをすべて知らせるのはよくないから)。しかし、白と灰色の色分けは、同じ色の連続で同じ日を表 しています。
  • 左端の「A1. 1問」、「A2. 運動」について
    この表の目的とは異なりますが、ついでとして、遊び100%の毎日を送るときでも勉強の習慣を忘れないために、たった1問で良いので解くこと にします。
    正直言うと毎回遊ぶ前に必ず1問勉強するのは心が折れそうです。でも慣れさえすれば…と思います。(追記:やってみると結構効果的で役立って います)
    行ったら◎、行わなかったら× を記入します。
    2020年11月20日ぐらいから「A2. 運動」を追加しました。パソコンを行う前に運動することを強制するものです。腕立て伏せ10回とか腹筋10回とかです。
    (ホントだったら30回くらいはやりたいところですが、私は体の調子が悪いので、10回程度にしています)
  • 右端の「G. 判定」について
    「D. 予定終了時刻」と「E. 実際終了時刻」を比べて、オーバーした時間によって判定を行います。
    ◎ 9分以下
    ○ 10分~19分
    △ 20分~29分
    × 30分以上 (オーバー理由を記載する。理由の統計を取れば何が問題なのか把握でき、改善しやすいです)
  • 平日の 1.5h、2.0h の PC 使用の連続が負担になっているので、週のスケジュールは下記のようにする。
    月水で PC 使用しないことでうまいぐあいに「体力回復」されて、「生活」がうまく回り、プログラミング以外の「創作活動」(イラスト等)に時間が取れることを期待します。
    月:0h
    火:1.5h
    水:0h
    木:1.5h
    金:1.5h
    土:4hまで(休日で、翌日も休日)
    日:2hまで(休日で、翌日平日) ←早起きなおかつ(日々の買い物とかじゃなく)散歩するなら 3h やって良い
    (※2021年2月2日:週の各時間を調整しました)
  • ×、△、"記録しなかった長時間作業" が多いと思ったら、NO PC WEEK※ を1週間実施する。
    規則を超えて長時間行ってしまうのは、「ちょっと必要だ」という気持ちでそうなったと思うので、そんなに悪いことではないと思います。
    しかし、必要だからと言って繰り返し長時間作業を行ってそれを記録していると、この表の意味がないので、繰り返しになっていたら、NO PC WEEK の実施でバランスを取ることにします。
    NO PC WEEK とは私自身の健康のために私のパソコンの使用を制限する期間です)


例外事項:

  • 「E. 実際終了時刻」のあと、プログラミングの場合のみスッパリ終了しないで、今後のプログラミングの方針をテキストファイルに書くのは OK にしています。


廃止事項:

以下の事項は実施できないので廃止する。

  • 自分のホームページやプログラムを読んでいて誤字脱字を発見した際、その 「修正」は訪問者にとっても管理人にとっても有益なので、「タイマーで測って10分未満。1点修正したら終了」を条件に作業してよい。ま た、基本的にそれを連続させないこと。


中途結果:

結構いい結果になっています。 炊事や掃除、散歩、早起きなどが好ましいリズムでできるようになりました。

(2020年9月6日追記:散歩、早起きは最近あまりできていません。掃除や炊事は理 想的にできています)

また、パ ソコン以外の趣味も進むようになりました。電子回路、ガンプラ、RPG のプログラム以外のモンスターイラストやストーリーなど RPG の肉付け部分の創作、勉強、昔好きだったペーパークラフト等々。

そしてパ ソコンの趣味自体も深夜遅くまで行うよりも質が高くなったように感じます。制限された短い時間の中で結果を得ようとするので、取捨選択が 行われているし、時間が終了して、空いた時間ができ、それがほどよい休憩になり、今後の作業の方針を落ち着いて検討することもできます。 それが質につながっているのかなと思います。

この取り組みが、15 才 ~ 18 才くらいまでの高専(中退)に所属していた時に実施できていたら良かっただろうなと思います。でもそれくらいの年齢では経験が浅く、このような効果的なルール作りを行うこ とはできなかったと思います。自分は人に比べて「創作意欲」や「ゲームで遊ぶ欲望」におぼれやすいところがあり、そのコントロールはとても難しい です。

ちなみに、分単位で記録を取ったりして、だいぶマメに見えるかもしれませんが、 Windows の日本語入力(MS-IME)で「いま」と入力し、 変換 キーを押さずに ボタンを押すと現在の時刻になります。道具の便利さが人をマメに見せるのかもしれません。



(これは イラストAC の無料素材です)

自分の家族にすすめたい方へ:

パソコンのやりすぎやネットゲームのやりすぎは社会問題にもなっているので、そう思う ご家族の方は多くいらっしゃると思います。

私の両親も過去に私について問題にしていました。学校へ行かず、毎日朝までパソコンに 向かい、悶々としていたんです。

この表はその家族が困っていたときから 30 年後に、私が自分で必要を感じて作ったものです。

私は今 一人暮らしをしていて、自分で生計を立てる中、パソコンにおぼれた生活をすると、生活がうまく回らなくなるんです。

具体的には、

  • 人前で疲れた顔を見せてしまい、人間関係がうまくいかなくなる。もっと具体的には、職場、とこや、お店のレジ、歯医者。
  • 掃除、洗濯、炊事が後回しになり、実質、それらを行う時間がなくなってしまう。深夜遅くや翌日に回したり、行わなかったりする。

これらを改善するために表を作りました。

でも、このような必要にせまられて「自分の動機で始めた場合」と、「人からすすめられ て始めた場合」とでは、結果が異なると思います。

自分の切実な動機で始めたなら自分から進んでこの表を活用すると思いますが、外から押 し付けられたものはなかなか定着しないものです。

あまり適当なことは言えませんが、上 記の青い部分で書いたことは、本人にとって得になることなので、「ときどき休憩して、他のあの趣味やってみたらどうだ?」とか 「ときどき休憩したほうがプログラミングの質が上がるって話だぞ?」という形ですすめてみたらどうでしょうか。(それでも最終的には自立してもら うことは必要だと思いますが)

私が両親を困らせていたときに、突然、外へ一人で出て行って、一人暮らしを始めたり、 接客業を始めたり、いくつか資格取得したりといろいろ行えた理由というのは、正直言ってわかりません。(※しかし途中で失業して2度、実家に戻っ たことがあります。1 回目は 21 才くらいのときに 5 年間、2 回目は 35 才くらいのときに1年未満、実家にいて、何もしてなかったり働いたりしていました)

私が両親を困らせていたのは 16 才 ~ 20 才くらいの学生のころですが、そのころ家族と私自身と友人たちがみんなそれぞれ、私の生活について心配したり困ったり悩んだり、あの手この手を試したりしていました。そう いう煮詰まったような状況が運命をそのように(解決の方向へ)動かすのかもしれません。運命がどうの というのは変ですが、そのくらいのことしか言えません。何かしら取り組む必要があるということですかね。

この社会問題はクリアーすべきものみたいです。



以下は私のための覚え書きです。(装飾はふせん紙のつもりです)

記事の先頭に 5W1H(意味:「いつWhen、どこでWhere、だれがWho、なにをWhat、なぜWhy、どのようにHow」これらを相手に伝えると情報をわかりやすく、もれなく 伝達できる」) を書くと良い。
面白くないゲームは、”変化がないから面白くない”。(あるゲームソフトを見ていてそう思った)

開発時の発想=変化=面白い
 …開発時に何をどう描くかと発想することができれば、作品に変化が生まれ、視聴者が面白いと思うことができる。

開発時に発想できない=変化を作れない=面白くない
 …開発時に発想できなければ、作品に変化を与えることができず、視聴者に面白いと思わせることができない。

(いかに発想するのかはまた別の話)
 
ただし、変化を作りさえすれば面白くなるのかと言ったらそうではないだろう。
人が面白いと思う変化って何?

以下の表は、今月の私の関心事の記録です。

記入日付 ジャンル 現在 タイトル、評価、感想
4月2日 (金) アニメ 観ている最中 「ドラゴンボール超」(リンクは第97話)GYAO!にて無料放送中
ジャンプ漫画アニメ化作品/0:23:20 ×131話/2015年/公評価:★★★☆☆、私評価:★★★☆☆
** 感想 **
全王様の「力の大会」が始まって、戦い始めたところです。
ストーリーは鳥山明が大部分考えているので、おもしろいです。
「ジョジョ」の仗助編が終わってしまって、他に観るものがこの「超」と超じゃない「ドラゴンボール」しかない…


以降は今月の日記(このウェブページのメイン)です。上ほど新しい日記です。

2021/4 /19(月)

NO PC WEEK 3週間 実施 -[no_pc]

2021/4/19(月)~ 2021/5/9(日)当日いっぱいまで


2021/4 /18(日)

文字コード SJIS の「ダメ文字」 -[program]

今日、 いつも使っている自作のツールが突然エラーを出しました。

どうも調べてみると、「文字コード」の問題のようでした。

いつも問題なく使えていたのに、突然エラーを出すなんて、どういうことなのか―――

急遽 対処に追われました。


犯人はだれだ!、だれだ!!、だれだ

Perl で、スクリプトファイルの文字コードを「SJIS」にして保存した状態で、

$s = "スリープ中です";

if( $s =~ m/スリープ/ ) {

    print "found.";

} else {

    print "not found";

}

このような、文字列 $s の中から検索文字列「スリープ」を見つけるコード(正規表現を利用)を書いて実行してみると、

下図のようにエラーになります。今回出した突然のエラーがこれです。


おかしいな、と思っていろいろ文字列を替えて試しました。次のコードのように「スリープ」を「スリプ」にして…

$s = "スリプ中です";

if( $s =~ m/スリプ/ ) {

print "found.";

} else {

print "not found";

}

実行してみると、↓

エラーは起きません。

犯人は「-」(ハイフン)だ!と思って、

「正規表現 sjis ハイフン」で検索(リンクは Bing 検索)したところ、解説してくれているサイト(下記リンク)が見つかりました。

サイトさん 「Shift_JISのダメ文字」

…以前から『SJIS の文字列には「特定の処理系で使う制御文字」が含まれることがある』というのは何となく知っていたんですが、気づいて解決するまでに時間がかかってしまいました。

特定の処理系とは、ここでは「正規表現」のことです。いろいろな制御文字でキーワードを表現して、文字列から特定の文字列を探し出すものです。

正規表現が、SJIS の「-」に含まれる制御文字を「-」ではなく制御文字として見てしまうので、エラーになってしまいます。

今まで「-」を含む文字列を自作ツールで使ってこなかったので、今回突然「-」を使ってエラーに遭遇した―――というわけでした。


解決方法

で、解決方法は、「SJIS 特有の問題なので、別の文字コードに直せばエラーは出なくなる」ということでした。

ファイル自体の文字コードを SJIS から UTF8 に直したところ エラーは出なくなりましたが、(こ れを※Aとして のちに参照)

私の今回の問題では ファイル自体の文字コードを変更したくなかった ので、下記のような対処になりました。

use Encode;

$s = "スリープ中です";    #ファイル自体がSJISなので、この文字列はSJIS。

$r = "スリープ";

Encode::from_to( $s, "sjis", "utf8" );    #SJISからUTF8へ変換する

Encode::from_to( $r, "sjis", "utf8" );

if( $s =~ m/$r/ ) {    #検索対象も、検索ワードもどちらもUTF8なので、
                         #SJISの「-」に含まれる制御文字が機能することはない

print "found.";

} else {

print "not found";

}

実行すると、正しく見つけてくれます↓

これで解決に至りました。

現在自作ツールは「ー」があっても問題なく使用できています。

めでたし、めでたし


プログラミング初心者にとっての文字コード

…でも、こうなってくると、プログラミングの初心者の人には文字コードの問題は 太刀打ちできないんじゃないかと、ちょっと思いました。

文字コードって何なのか理解しづらいし、その対応も上記のように難しいです。

今回のこの文字コードの問題は、「正規表現を使用」なおかつ「SJISを使用」の場合の問題なので、「正規表現」か「SJIS」のどちらかを使わないよ うにすれば問題は起きません。

「正規表現の中で SJIS の文字が問題を起こす」ということなので、正規表現を使わないなら制御文字の問題はないので そもそも問題は起きませんし、 SJIS を使わないなら、正規表現の中で意図しない制御文字の出現も起きません。

4コマ漫画「初心者ガンダム」 -[omosiro]
2 次創作
特別読切

4コマ漫画

「初心者
ガンダム」




字幕 機動戦士
 初心者ガンダムだ
やだー!カッコワルーイ!
ダサーイ!
連邦軍もこれでおしまいね。
いやいやいや!
だいじょーぶ、だいじょーぶ
カレも初心者ァ・アズナブルだから!
オレ、初心者ァ




おてがみ

※上記の4コマ漫画の1コマ目(左端)は原作(の最近のメディア展開の1カッ ト)を模写して 少しいじったものです。(ファンアート)
  原作名:「機動戦士ガンダム」 矢立肇 氏、富野由悠季 氏 原作

※絵の模写の公開については、こちらのサイトの記事を参考にさせていただきました。それでもグレーゾーンな感じがして難 しいなと思いました。



楽な方法1: 正規表現を使わない

たとえば、下のプログラムは、ファイルは SJIS で保存していますが、正規表現を使わないでサブルーチン index を使って同じことをしています。

$s = "スリープ中です";    #ファイル自体がSJISなので、この文字列はSJIS。

if( index( $s, "スリープ" ) > -1 ) {    #index関数はSJISでもUTF8でも正しく動作する。

print "found.";

} else {

print "not found";

}

その実行結果です↓

なお、index を使わないで正規表現を使いたがる理由は、正規表現の万能度が高いからです。

楽な方法2: ファイル自体に SJIS を使わない

また、「正規表現」を使用して、ファイル自体に文字コード「SJIS」を使わない場合は、上述※Aの時点で試しました。動作します。

なお、ファイル自体が UTF8 でも、どこからか読み込んだ文字列が SJIS で、その SJIS の文字列を正規表現にかけると同じ問題が発生します。

楽な方法3: 文字列変数名に文字コード名を付与する

それから、プログラム中の文字列を見て、それがどんな文字コードなのかはすぐにわからないので、プログラミングがけっこう困難ですよね。

「この文字列変数の文字コードってなんだっけ?」的な。

私は Perl で文字コードが問題になるときは、日ごろからこのようにプログラムしています。


文字列変数の変数名の末尾に「UTF8」とか「SJIS」などと付与することで、その文字列が何なのかすぐにわかるようにしています。

混乱せずにプログラミングできるのでオススメです。

楽な方法4: ショートカット的なサブルーチンを用意する u2s(), s2u()

また、その他の工夫として、Perl の Encode モジュールの文字コード変換サブルーチン、

from_to( 対象文字列, 変換前文字コード名, 変換後文字コード名 )

…は記述が面倒だと思って、

u2s( 文字列 )、s2u( 文字列 ) というようなサブルーチンを自分で用意しています。

sub s2u {

    local( $str ) = shift;

    Encode::from_to( $str, "Shift_JIS", "UTF-8" ) ;

    return $str;

}


sub u2s {

    local( $str ) = shift;

    Encode::from_to( $str, "UTF-8", "UTF-8" ) ;    #utf8フラグ除去

    Encode::from_to( $str, "UTF-8", "Shift_JIS" ) ;

    return $str;

}

…今このサブルーチンを貼り付けしていて気づきましたが、

そういや、UTF8 は「UTF8 フラグ除去」なんて対処が必要になる場面もあったんでした。


とにかく日本語の文字コードは問題だらけで困りますね!


2021/4 /15(木)

グリフォンモデリング -[modeling]

時間がないので、簡単に。

動物の、頭、首、胴体を何も考えないで「ボーン」でつなげると、「首を横に回す」+「かしげる」という動かし方をしたときに、おかしな方向にかしげてし まいます。


▼首の中のボーンがななめで、頭のボーンもななめなので、首を横に回してかしげると、おかしな方向に頭が傾く。


▼水平に回すためのボーン「くび_まわし」と、かしげるためのボーン「くび_かしげ」を用意する。


▼実際に作成したボーン


▼首を水平に回しつつ、かしげられるようになりました。鳥ってどうしてこうやってかしげるのだろう…「?」なのかな?


▼「鷲(わし)」の画像検索結果のかしげ写真(著作権が気になってモザイクをかけました)

どう見ても「ん?」って感じ。



2021/4 /9(金)

アドレスバーの動きで onresize イベントが発動してしまう問題について -[JavaScript]

現在作成中の、「3Dお姉さんのプログラム説明」のプログラム(こ のリンクをクリックするとダダダーっと開始しますのでご注意ください)で、スマートホンのブラウザのスクロール時に意図しないリサイズが起こり困っていま した。

「3Dお姉さんの…」は不特定多数の方が利用することを想定したプログラムであって、すでに掲載しているので、早めに直さなければ…と思いました。

それでいろいろインターネットを調べました。

同じ問題で困っているという話は、地味にあるみたいです。

…というわけで、どちらの方々も、これといった解決策がなくて困っている様子でしたが、いくつか有効な情報を教えてもらい、良かったです。ありがとうご ざいます。

私もけっこう悩みましたが、落ち着いたプログラムはこれです。

スマートホンの問題なので、この JavaScript の動きはスマートホンでしか確認できません。

JavaScript を別ウィンドウで開く(snapshot。現時点で固定したファイル、公向け)

JavaScript を別ウィンドウで開く(開発に合わせて変更されるファイル、私向け)

完ぺきではありませんが、そこそこ良いかなと思っているところです。

でもスマートホンの機種によってはうまく動かないかもしれません。


(訪問者のどんなニーズと この記事がつながるか)


2021/4 /8(木)

最近観た映画のレビュー(2件) -[eiga]

映画「2067」

SFアドベンチャー/2020年オーストラリア/1:54/公評価:★★★☆☆、私評価:★★★☆☆

楽天TV にてレンタル440円

楽天TVに投稿した私のレビュー:

「おもしろかった、そこそこ」

スーパーアクションやトリッキーな映像表現による興奮はあまりありません。

厳しい暴力や性表現、グロテスクな表現はないので安心して観られると思います。

人間ドラマを楽しめる人向けで、個人的には贈り物として届いた缶詰の中身が良かったかな。

ここでの追加レビュー:

少し、甘いストーリーかな?(甘いというか ぬるい というか)という気はちょっとしました。

楽天以外の人々の評価で、★2.7だったり低評価になっています。

楽天ポイントカードを毎日の買い物で提示していたら、ちょっとした小遣い程度にポイントが貯 まっていて(600円分程度)、使わないと失効すると思い、映画鑑賞代に あてました。


映画「ひぐらしのなく頃に」

ホラー/2008年日本/1:46:27/公評価:★★☆☆☆、私評価:★★★★☆

Yahoo! GYAOにて無料配信あと6日2021年4月14日(水) 23:59まで

Yahoo! GYAO に投稿した私のレビュー:

「おもしろかった」

今回含めて2回見ました。

2回とも満足できました。

原作を知っている方は気持ちを切り替えて評価することはできないはずだと思いますが、私のよう に原作を知らない人は高い評価を出すことができる作品です。

どの登場人物も悪に染まっているわけではなく、 お社様に翻弄(ほんろう)されているという位置づけなのが、物語を引き立てていたように思います。

2回見て2回とも満足すると同じ役者さんが活躍しているのを見たくなってしまいます。

ここでの追加レビュー:

ホントは3回見てるかな?

主人公が女子生徒たちに疑念を抱いて、体調が悪いと言って下校するときの場面で、女子生徒の 「嘘だ!!」と叫ぶ場面が、効果的で好きなんだよなぁ。


他に、

…を観てました。


(訪問者のどんなニーズと この記事がつながるか)


最近、上のメニューでブランクのアイコンが並んでいる理由は…

2020年分の10月スクリプト(トップページの冒頭に飾るスクリプト)の完成を待っているからです。

▼メニューにブランクアイコンが並んでいる…


(訪問者のどんなニーズと この記事がつながるか)



2021/4 /5(月)

「3Dお姉さんによるプログラム説明」のテスト -[program,javascript]

ウェブページに掲載するプログラムの説明を、訪問者の皆さんがもっと楽しく読めるように、キャラクターにしゃべらせる(皆さんがキャラのセリフを読む) ようにしてみました。

プログラミングの初心者の方向けの内容となっており、ゲーム感覚でプログラムの説明を読むことができます。

下の緑色のボタンをクリックすると、開始します。(約 18 分)

進めるにはセリフ部分をクリック(タップ)するか、キーボードのスペースキーを押してく ださい。

途中でやめるには、顔をダブルクリックするか、顔とフキダシ部分を2本の指でタッチしま す。


3D お姉さんによるプログラム説明 開始/停止


There is no canvas.

1. プログラムをインターネットブラウザで表示するためのプログラム(HTML)

<html>

<head>

<meta content="text/html; charset=UTF-8" http-equiv="content-type">

<script src="a.js"></script>

<script>

function onloadx() {

app = new App( "test_canvas" );

app.start();

}

</script>

</head>


<body onload="onloadx()">

<canvas id="test_canvas" width="512" height="448" style="

border : solid 1px black;

">

There is no canvas.

</canvas>

</body>

</html>


ブラウザで表示する


2. メイン・プログラム(JavaScript)

class App {

constructor( canvasId ) {

this.cc = document.getElementById( canvasId ).getContext( "2d", { alpha: false } );

this.cc.tmp = {

width : this.cc.canvas.width,

height : this.cc.canvas.height,

}


this.balls = new Array();

for( let color of [ "rgb(255,0,0)",

"rgb(0,255,0)",

"rgb(0,0,255)",

"rgb(255,0,255)",

"rgb(0,255,255)",

"rgb(255,255,0)",

] ) {

let ball = new Ball( color, this.cc );

ball.addX = 5 + Math.random() * 10;

ball.addY = 5 + Math.random() * 10;

ball.x = Math.random() * this.cc.tmp.width;

ball.y = Math.random() * this.cc.tmp.height;

this.balls.push( ball );

}

}

start() {

if( typeof this.timerId === "undefined" )

this.timerId = setInterval( this.frame.bind( this ), 100 );

}

stop() {

if( typeof this.timerId !== "undefined" ) {

clearInterval( this.timerId );

delete this.timerId;

}

}

frame() {

for( let ball of this.balls ) {

ball.frame();

}

this.draw( this.cc );

}

draw( cc ) {

cc.fillStyle = "white";

cc.fillRect( 0, 0, cc.tmp.width, cc.tmp.height );

for( let ball of this.balls ) {

ball.draw( cc );

}

}

}


class Ball {

constructor( color, cc ) {

this.color = color;

this.cc = cc;

this.x = 0;

this.y = 0;

this.addX = 1;

this.addY = 1;

}

frame() {

this.x += this.addX * 1.25;

this.y += this.addY * 1.25;

//check.

if( this.x > this.cc.tmp.width ) {

this.addX *= -1;

}

if( this.x < 0 ) {

this.addX *= -1;

}

if( this.y > this.cc.tmp.height ) {

this.addY *= -1;

}

if( this.y < 0 ) {

this.addY *= -1;

}

}

draw( cc ) {

cc.beginPath();

cc.arc( this.x, this.y, 75, 0, 6.28, false );

cc.closePath();


cc.globalAlpha = 0.5;

cc.fillStyle = this.color;

cc.fill();

// cc.globalAlpha = 1; //この行コメントアウトで残像

}

}



(訪問者のどんなニーズと この記事がつながるか)